package com.link2room.rodimus.facade;

import com.link2room.common.dto.param.base.BaseParamDto;
import com.link2room.common.jpa.result.QueryResult;
import com.link2room.rodimus.dto.param.manager.SalesmanLeadingParamDto;
import com.link2room.rodimus.dto.param.manager.SalesmanManagerParamDto;
import com.link2room.rodimus.dto.result.manager.IncomdetailSchedulesDto;
import com.link2room.rodimus.dto.param.inside.SalesmanInComeDetailInsideParamDto;
import com.link2room.rodimus.dto.result.base.SalesmanBaseDto;
import com.link2room.rodimus.dto.result.base.SalesmanIncomeDetailDto;
import com.link2room.rodimus.dto.result.base.SalesmanMemberDto;

/**
 * Created by VegetaKo on 2016/10/11.
 */
public interface ISalesmaManagerFacadeService {
    /**
     * 获取销售员
     * @param salesmanManagerParamDto 销售员参数
     * @return
     * @throws Exception
     */
    SalesmanBaseDto getSalesmanBySalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    void auditSalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    void modifySalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;


    void disableSalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    void auditSalesmanIncomeDetail()throws Exception;
    void startPaySalesmanIncomeDetail()throws Exception;

    /**
     * 分销员奖励 第一步:粉丝奖励
     * @param paramDto
     * @throws Exception
     */
    void paySalesmanAwardMemberStep(SalesmanInComeDetailInsideParamDto paramDto)throws Exception;

    /**
     *
     * @param paramDto
     * @throws Exception
     */
    void paySalesmanAwardReservationStep(SalesmanInComeDetailInsideParamDto paramDto)throws Exception;

    QueryResult<SalesmanBaseDto> listSalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    QueryResult<SalesmanIncomeDetailDto> listSalesmanIncomeDetail(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    QueryResult<SalesmanIncomeDetailDto> listSalesmanIncomeDetailBySalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    QueryResult<SalesmanMemberDto> listSalesmanMember(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    QueryResult<SalesmanMemberDto> listSalesmanMemberBySalesman(SalesmanManagerParamDto salesmanManagerParamDto) throws Exception;

    /**
     * 检查是否有奖励发放任务进行
     * @param paramDto
     * @return
     */
    IncomdetailSchedulesDto incomdetailSchedules(BaseParamDto paramDto) throws Exception;

    /**
     * 导入分销员
     */
    void salesmanLeading(SalesmanLeadingParamDto paramDto) throws Exception;
}
